package com.sxf.biz.customer.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sxf.biz.coordinator.vo.CoorSettleDetailReq;
import com.sxf.biz.coordinator.vo.CoorSettleDetailRes;
import com.sxf.biz.coordinator.vo.CoorSettleListReq;
import com.sxf.biz.coordinator.vo.CoorSettleListRes;
import com.sxf.biz.customer.vo.*;
import com.sxf.biz.model.ProjectCenterAudit;
import com.sxf.biz.model.Settle;
import com.sxf.biz.operator.vo.OpSettleList4ExportReq;
import com.sxf.biz.operator.vo.OpSettleListReq;
import com.sxf.biz.operator.vo.SettleDetail4OpRes;
import com.sxf.biz.subjects.vo.SubSettleListInProjectReq;
import com.sxf.biz.subjects.vo.SubSettleListInProjectRes;
import com.sxf.core.db.page.Pagination;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description: TODO
 * @Author Leo
 * @date 2024/3/2021:22
 */
public interface SettleMapper extends BaseMapper<Settle> {

    SettleStaticsResVo getSettleStatics(@Param("req") SettleListReq req);

    Pagination<SettleListRes> getSettleListByPage(Pagination<SubjectListReq> objectPagination, @Param("req") SettleListReq req);

    Pagination<SettleListRes> getSettleListByPage4Op(Pagination<OpSettleListReq> objectPagination, @Param("req") OpSettleListReq req);

    SettleStaticsResVo getSettleStatics4Op(@Param("req") OpSettleListReq req);

    SettleDetail4OpRes getSettleDetail4Op(@Param("req") SettleDetailReq req);

    /**
     * -------------------coordinator
     */

    /**
     * 临床协调员查新结算单列表
     */
    Pagination<CoorSettleListRes> getSettleList4Coor(Pagination<CoorSettleListReq> objectPagination, @Param("req") CoorSettleListReq req);
    Pagination<CoorSettleListRes> getSettleList4Aduit(Pagination<CoorSettleListReq> objectPagination, @Param("req") CoorSettleListReq req);
    Pagination<CoorSettleListRes> getSettleList4AduitWithApproval(Pagination<CoorSettleListReq> objectPagination, @Param("req") CoorSettleListReq req);
    CoorSettleDetailRes getSettleDetail4Coor(@Param("req") CoorSettleDetailReq req);
    List<ProjectCenterAudit> getNextApprover(@Param("req") CoorSettleDetailReq req);

    /**
     * ------------------subjects
     */

    List<SubSettleListInProjectRes> getSettleList4Sub(@Param("req") SubSettleListInProjectReq req);

    /**
     * 运营导出
     */
    List<SettleListRes> getSettleListForExport( @Param("req") OpSettleListReq req);

}
